const http = require('http');
//加载引入querystring
const qs = require('querystring');

//这里的做法就是将createServer中的方法提取出来，使用onRequset函数来代替函数体
http.createServer(onRequset).listen(3000);

//所以这里的onRequset就是函数体，也就是createServer中的函数体，服务器启动之后会调用这个函数
function onRequset(req, res) {
    res.setHeader('Access-Control-Allow-Origin', '*');  //这里的是代表所有的网站都可以访问当前的服务器
    console.log('request come', req.url);  //这里没有接受到值，是因为前端只是返回了post的数据

    /*客户端发送的请求体数据可能会被分块传输（chunked transfer），特别是在数据量较大的情况下。
每次接收到一部分数据时，data 事件会被触发，因此需要将这些数据片段逐步累积到一个变量中（如代码中的 postData）。
    */
    let postData = '';
    req.on('data', function(data){
        //这里的data是每次接收到的数据片段，每次接收到一部分数据时，data 事件都会被触发，因此需要将这些数据片段逐步累积到一个变量中。
        postData += data;
    });

    /*postData 是从请求体中逐步累积的原始数据（通常是 URL 编码格式的字符串，例如 username=lingma&password=123456）。
qs.parse 将这个字符串解析为一个键值对的对象。对于上面的例子，解析后的结果将是 { username: 'lingma', password: '123456' }
*/
    //当所有数据接收完毕后，end 事件会被触发，此时可以处理接收到的数据。
    req.on("end",function(){
        let data = qs.parse(postData);
        console.log(data.username,data.password);
        res.write(JSON.stringify({"username":data.username}))
        res.end();
    })
}

